<?php

//Obtenemos todas la alertas ordenada por fecha de publicacion
//Obtiene todas las alertas Publicadas(estado=1) con idioma y si no existe el idioma selecciona otro 
//PRUEBAS: BÁSICAS(OK)
function getAlertas() {

	$idioma = getIdioma();
	$estado = getEstado();

	$sql_traduccion = "(SELECT * FROM Alerta a1, Alerta_Locale a1loc WHERE a1.id = a1loc.id_alerta and a1.estado = :estado and a1loc.id_idioma = :idioma)";
	$sql_sin_traduccion = "(SELECT * FROM Alerta a2, Alerta_Locale a2loc WHERE a2.id = a2loc.id_alerta and a2.estado = :estado and NOT EXISTS (SELECT * FROM Alerta a_sub, Alerta_Locale al_sub WHERE a2.id = a2loc.id_alerta and a2.id = a_sub.id and a2.id = al_sub.id_alerta and al_sub.id_idioma = :idioma) GROUP BY(a2.id))";

	$sql = $sql_traduccion . " UNION " . $sql_sin_traduccion . " ORDER BY fecha_publicacion DESC LIMIT 50";
	try {
		$db = getConnection();
		$stmt = $db->prepare($sql);
		$stmt->bindParam("idioma", $idioma);
		$stmt->bindParam("estado", $estado);
		$stmt->execute();
		$alertas = $stmt->fetchAll(PDO::FETCH_OBJ);
		$db = null;
		echo $_GET['callback']."(".json_encode($alertas).");";
		//echo json_encode($alertas);
	} catch(PDOException $e) {
		echo '{"error":{"text":'. $e->getMessage() .'}}'; 
	}
}

//Obtenemos todas la alertas ordenada por fecha de publicacion
//Segun las categorias seleccionadas
//Obtiene todas las alertas Publicadas(estado=1) con idioma y si no existe el idioma selecciona otro
//PRUEBAS: BÁSICAS(OK)
function getAlertasCategorias() {
	$idioma = getIdioma();
	$estado = getEstado();

	//categorias separadas por comas
	$categorias = $_GET['categorias'];
	$categorias = "(" . $categorias . ")";

	$sql_traduccion = "(SELECT * FROM Alerta a1, Alerta_Locale a1loc WHERE a1.id = a1loc.id_alerta and a1.estado = :estado and a1loc.id_idioma = :idioma and a1.id_categoria IN " . $categorias . ")";
	$sql_sin_traduccion = "(SELECT * FROM Alerta a2, Alerta_Locale a2loc WHERE a2.id = a2loc.id_alerta and a2.estado = :estado and a2.id_categoria IN " . $categorias . " and NOT EXISTS (SELECT * FROM Alerta a_sub, Alerta_Locale al_sub WHERE a2.id = a2loc.id_alerta and a2.id = a_sub.id and a2.id = al_sub.id_alerta and al_sub.id_idioma = :idioma) GROUP BY(a2.id))";

	$sql = $sql_traduccion . " UNION " . $sql_sin_traduccion . " ORDER BY fecha_publicacion DESC LIMIT 50";
	
	try {
		$db = getConnection();
		$stmt = $db->prepare($sql);
		$stmt->bindParam("idioma", $idioma);
		$stmt->bindParam("estado", $estado);
		$stmt->execute();
		$alertas = $stmt->fetchAll(PDO::FETCH_OBJ);
		$db = null;
		echo $_GET['callback']."(".json_encode($alertas).");";
		//echo '{"alertas": ' . json_encode($alertas) . '}';
	} catch(PDOException $e) {
		echo '{"error":{"text":'. $e->getMessage() .'}}';
	}
}

//Obtenemos una Alerta en concreto con su id
//TODO: De momento no se va a usar, y no le pasamos estado y el idioma que se le pasa
//ya que previamente se ha debido de obtener en la app
function getAlerta($id) {
	$idioma = getIdioma();
	
	$sql = "SELECT * FROM Alerta a, Alerta_Locale al WHERE a.id = al.id_alerta and al.id_idioma =:idioma and id=:id";
	try {
		$db = getConnection();
		$stmt = $db->prepare($sql);  
		$stmt->bindParam("id", $id);
		$stmt->bindParam("idioma", $idioma);
		$stmt->execute();
		$alerta = $stmt->fetchObject();  
		$db = null;
		echo json_encode($alerta); 
	} catch(PDOException $e) {
		echo '{"error":{"text":'. $e->getMessage() .'}}'; 
	}
}


/* 
//TODO
//ESTAS NO SE USAN, DESDE LA APLICACIÓN,
//ES UNA POSIBLE AMPLIACIÓN PARA LA API
function addAlerta() {
	error_log('addAlerta\n', 3, '/var/tmp/php.log');
	$request = Slim::getInstance()->request();
	$alerta = json_decode($request->getBody());
	$sql = "INSERT INTO alerta (titulo) VALUES (:titulo)";
	try {
		$db = getConnection();
		$stmt = $db->prepare($sql);  
		$stmt->bindParam("titulo", $alerta->titulo);
		$stmt->execute();
		$alerta->id = $db->lastInsertId();
		$db = null;
		echo json_encode($alerta); 
	} catch(PDOException $e) {
		error_log($e->getMessage(), 3, '/var/tmp/php.log');
		echo '{"error":{"text":'. $e->getMessage() .'}}'; 
	}
}

function updateAlerta($id) {
	$request = Slim::getInstance()->request();
	$body = $request->getBody();
	$wine = json_decode($body);
	$sql = "UPDATE alerta SET titulo=:titulo WHERE id=:id";
	try {
		$db = getConnection();
		$stmt = $db->prepare($sql);  
		$stmt->bindParam("titulo", $wine->titulo);
		$stmt->bindParam("id", $id);
		$stmt->execute();
		$db = null;
		echo json_encode($titulo); 
	} catch(PDOException $e) {
		echo '{"error":{"text":'. $e->getMessage() .'}}'; 
	}
}

function deleteAlerta($id) {
	$sql = "DELETE FROM alerta WHERE id=:id";
	try {
		$db = getConnection();
		$stmt = $db->prepare($sql);  
		$stmt->bindParam("id", $id);
		$stmt->execute();
		$db = null;
	} catch(PDOException $e) {
		echo '{"error":{"text":'. $e->getMessage() .'}}'; 
	}
}*/


?>